package com.francesc.bo.borsa.io;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;
import java.util.Vector;

import com.francesc.bo.borsa.model.Moviment;
import com.francesc.bo.borsa.model.Valor;

public class IoActions {

	TreeSet<Moviment> moviments = new TreeSet<Moviment>();
	Collection<Valor> valors = new TreeSet<Valor>();

	public void saveMoviment(Moviment moviment) {
		moviments.add(moviment);
	}

	public Moviment loadUltimMoviment(Valor valor) {
		if (valor == null || valor.getCodi() == null) {
			throw new IllegalArgumentException(
					"valor no pot ser null ni tenir codi a null");
		}
		Moviment m = new Moviment();
		m.setValor(valor);
		if (moviments.contains(m)) {
			m = moviments.last();
		} else {
			m = null;
		}
		return m;
	}

	public Iterator<Moviment> getMoviments() {
		return moviments.iterator();
	}

	public List<Moviment> getMovimentsValor(Valor valor) {
		if (valor == null || valor.getCodi() == null) {
			throw new IllegalArgumentException(
					"valor no pot ser null ni tenir codi a null");
		}
		List<Moviment> movimentsValor = new Vector<Moviment>();
		Moviment m = new Moviment();
		m.setValor(valor);
		if (moviments.contains(m)) {
			for (Moviment moviment : moviments) {
				if (moviment.getValor().compareTo(valor) == 0) {
					movimentsValor.add(moviment);
				}
			}
		}
		return movimentsValor;
	}
}
